Parsing Date এবং Time

Java Technologies - জাভা টাইম প্যাকেজ (Java.time Package)
203

Java 8 থেকে java.time প্যাকেজের DateTimeFormatter ক্লাসটি ব্যবহার করে Date এবং Time এর Parsing (অথবা স্ট্রিং থেকে Date/Time অবজেক্টে রূপান্তর) করা সহজ হয়েছে। এটি ISO 8601 ফরম্যাটসহ বিভিন্ন কাস্টম ফরম্যাটে স্ট্রিং থেকে LocalDate, LocalTime, LocalDateTime এবং ZonedDateTime সহ অন্যান্য তারিখ এবং সময়ের অবজেক্ট তৈরি করতে সাহায্য করে।

1. DateTimeFormatter ক্লাস:

DateTimeFormatter ক্লাসটি স্ট্রিং থেকে তারিখ এবং সময়ের অবজেক্ট তৈরি করতে ব্যবহৃত হয়। এটি parse() মেথডের মাধ্যমে স্ট্রিংকে পার্স (রূপান্তর) করে LocalDate, LocalTime, LocalDateTime, ZonedDateTime ইত্যাদি অবজেক্টে রূপান্তর করতে সাহায্য করে।

Date এবং Time Parsing এর উদাহরণ:

1.1 LocalDate এর Parsing:

LocalDate হল যত তারিখের অংশ (দিন, মাস, বছর) ধারণ করে।

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class DateParsingExample {
    public static void main(String[] args) {
        // Define a custom date format
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        
        // Parse a string into LocalDate
        String dateString = "2024-12-23";
        LocalDate date = LocalDate.parse(dateString, formatter);
        
        // Print the parsed LocalDate
        System.out.println("Parsed Date: " + date);
    }
}

আউটপুট:

Parsed Date: 2024-12-23

ব্যাখ্যা:

  • এখানে DateTimeFormatter.ofPattern("yyyy-MM-dd") ব্যবহার করে কাস্টম তারিখ ফরম্যাট তৈরি করা হয়েছে।
  • LocalDate.parse(dateString, formatter) ব্যবহার করে স্ট্রিং "2024-12-23" কে LocalDate অবজেক্টে রূপান্তরিত করা হয়েছে।

1.2 LocalTime এর Parsing:

LocalTime হল সময় (ঘণ্টা, মিনিট, সেকেন্ড) ধারণ করে, তবে তারিখ সম্পর্কিত কোনো তথ্য থাকে না।

import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

public class TimeParsingExample {
    public static void main(String[] args) {
        // Define a custom time format
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
        
        // Parse a string into LocalTime
        String timeString = "14:30:45";
        LocalTime time = LocalTime.parse(timeString, formatter);
        
        // Print the parsed LocalTime
        System.out.println("Parsed Time: " + time);
    }
}

আউটপুট:

Parsed Time: 14:30:45

ব্যাখ্যা:

  • DateTimeFormatter.ofPattern("HH:mm:ss") ব্যবহার করে কাস্টম সময় ফরম্যাট তৈরি করা হয়েছে।
  • LocalTime.parse(timeString, formatter) স্ট্রিং "14:30:45" কে LocalTime অবজেক্টে রূপান্তরিত করেছে।

1.3 LocalDateTime এর Parsing:

LocalDateTime একটি LocalDate এবং LocalTime এর সংমিশ্রণ, যা তারিখ এবং সময় উভয়কেই ধারণ করে।

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class DateTimeParsingExample {
    public static void main(String[] args) {
        // Define a custom date and time format
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        
        // Parse a string into LocalDateTime
        String dateTimeString = "2024-12-23 14:30:45";
        LocalDateTime dateTime = LocalDateTime.parse(dateTimeString, formatter);
        
        // Print the parsed LocalDateTime
        System.out.println("Parsed DateTime: " + dateTime);
    }
}

আউটপুট:

Parsed DateTime: 2024-12-23T14:30:45

ব্যাখ্যা:

  • DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") কাস্টম তারিখ এবং সময় ফরম্যাট তৈরি করেছে।
  • LocalDateTime.parse(dateTimeString, formatter) স্ট্রিং "2024-12-23 14:30:45" কে LocalDateTime অবজেক্টে রূপান্তরিত করেছে।

1.4 ZonedDateTime এর Parsing:

ZonedDateTime হলো একটি LocalDateTime এর মতো, তবে এতে টাইমজোন সম্পর্কিত তথ্য থাকে।

import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.ZoneId;

public class ZonedDateTimeParsingExample {
    public static void main(String[] args) {
        // Define a custom ZonedDateTime format
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss z");
        
        // Parse a string into ZonedDateTime
        String zonedDateTimeString = "2024-12-23 14:30:45 UTC";
        ZonedDateTime zonedDateTime = ZonedDateTime.parse(zonedDateTimeString, formatter);
        
        // Print the parsed ZonedDateTime
        System.out.println("Parsed ZonedDateTime: " + zonedDateTime);
    }
}

আউটপুট:

Parsed ZonedDateTime: 2024-12-23T14:30:45Z

ব্যাখ্যা:

  • DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss z") কাস্টম টাইমজোন সহ তারিখ এবং সময় ফরম্যাট তৈরি করেছে।
  • ZonedDateTime.parse(zonedDateTimeString, formatter) স্ট্রিং "2024-12-23 14:30:45 UTC" কে ZonedDateTime অবজেক্টে রূপান্তরিত করেছে।

2. DateTimeFormatter ক্লাসের গুরুত্বপূর্ণ মেথড:

  • parse(String text): এটি একটি স্ট্রিং ইনপুট গ্রহণ করে এবং তা Date বা Time অবজেক্টে রূপান্তরিত করে।
  • ofPattern(String pattern): এটি একটি নির্দিষ্ট প্যাটার্ন দিয়ে DateTimeFormatter তৈরি করে, যাতে আপনি কাস্টম তারিখ/সময় ফরম্যাটের সাথে স্ট্রিং পার্স করতে পারেন।
  • format(TemporalAccessor temporal): এটি একটি Temporal অবজেক্ট (যেমন LocalDateTime) কে একটি নির্দিষ্ট ফরম্যাটে রূপান্তরিত করে।

3. ISO 8601 ফরম্যাট:

Java 8 java.time প্যাকেজে ISO 8601 তারিখ এবং সময় ফরম্যাট ব্যবহার করা হয়, যা একটি আন্তর্জাতিক স্ট্যান্ডার্ড। Java 8 এ DateTimeFormatter.ISO_LOCAL_DATE, DateTimeFormatter.ISO_LOCAL_TIME, এবং DateTimeFormatter.ISO_LOCAL_DATE_TIME এর মতো স্ট্যাটিক কনস্ট্যান্টস রয়েছে, যা ISO ফরম্যাটে পার্সিং করতে ব্যবহৃত হয়।

4. Parsing with Built-in Formatters:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class BuiltInFormatterExample {
    public static void main(String[] args) {
        // ISO date parsing
        String dateString = "2024-12-23";
        LocalDate date = LocalDate.parse(dateString, DateTimeFormatter.ISO_LOCAL_DATE);
        
        // Print the parsed date
        System.out.println("Parsed ISO Date: " + date);
    }
}

আউটপুট:

Parsed ISO Date: 2024-12-23

ব্যাখ্যা:

  • DateTimeFormatter.ISO_LOCAL_DATE ব্যবহার করে ISO 8601 স্ট্যান্ডার্ডের মধ্যে স্ট্রিং থেকে তারিখ পার্স করা হয়েছে।

  • DateTimeFormatter ক্লাস Java 8 তে java.time প্যাকেজের একটি শক্তিশালী টুল যা Date এবং Time এর পার্সিং এবং ফরম্যাটিং সঠিকভাবে করতে সাহায্য করে।
  • এটি ISO 8601 স্ট্যান্ডার্ড অনুসরণ করে, এবং কাস্টম প্যাটার্ন তৈরি করার মাধ্যমে আপনার প্রয়োজনীয় ফরম্যাটে Date/Time স্ট্রিং রূপান্তর করতে পারে।
  • LocalDate, LocalTime, LocalDateTime, ZonedDateTime ইত্যাদি ক্লাসের সাথে এই ফরম্যাটারটি ব্যবহৃত হয়ে থাকে।
Content added By

Date এবং Time Strings থেকে LocalDate, LocalTime, বা ZonedDateTime তৈরি করা

140

Java 8-এ java.time প্যাকেজটি তারিখ এবং সময় সম্পর্কিত আধুনিক API সরবরাহ করেছে, যা LocalDate, LocalTime, এবং ZonedDateTime এর মতো ক্লাসের মাধ্যমে তারিখ, সময় এবং টাইমজোন সম্পর্কিত কার্যকলাপ সহজ করে তোলে। অনেক সময় আমাদের স্ট্রিং ফরম্যাট থেকে LocalDate, LocalTime, বা ZonedDateTime অবজেক্ট তৈরি করতে হয়। এই প্রসেসটি DateTimeFormatter ক্লাস ব্যবহার করে করা সম্ভব।

Date and Time Strings থেকে LocalDate, LocalTime, এবং ZonedDateTime তৈরি করা

  1. LocalDate: শুধুমাত্র তারিখ (year, month, day) ধারণ করে।
  2. LocalTime: শুধুমাত্র সময় (hour, minute, second, nanosecond) ধারণ করে।
  3. ZonedDateTime: তারিখ, সময় এবং টাইমজোন ধারণ করে।

1. LocalDate থেকে Date String তৈরি করা

LocalDate অবজেক্টে একটি তারিখ স্ট্রিং ফরম্যাট থেকে কনভার্ট করতে DateTimeFormatter ক্লাস ব্যবহার করা হয়। DateTimeFormatter এর সাহায্যে আপনি স্ট্রিং ফরম্যাটকে প্যাটার্ন হিসেবে নির্ধারণ করতে পারেন।

LocalDate String থেকে LocalDate তৈরি করা:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class LocalDateExample {
    public static void main(String[] args) {
        // Date String in "yyyy-MM-dd" format
        String dateString = "2024-12-23";
        
        // Create a DateTimeFormatter with the same pattern
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");

        // Parse the date string into LocalDate
        LocalDate date = LocalDate.parse(dateString, formatter);

        // Print the LocalDate
        System.out.println("LocalDate: " + date);
    }
}

আউটপুট:

LocalDate: 2024-12-23

ব্যাখ্যা:

  • DateTimeFormatter.ofPattern("yyyy-MM-dd") ফরম্যাটে স্ট্রিংটি প্যাটার্ন অনুযায়ী পার্স করা হচ্ছে।
  • LocalDate.parse() মেথড ব্যবহার করে স্ট্রিং থেকে একটি LocalDate অবজেক্ট তৈরি করা হয়েছে।

2. LocalTime থেকে Time String তৈরি করা

LocalTime শুধুমাত্র সময় সম্পর্কিত তথ্য ধারণ করে। LocalTime স্ট্রিং থেকে সময় তৈরি করার জন্য আমরা DateTimeFormatter ব্যবহার করতে পারি।

LocalTime String থেকে LocalTime তৈরি করা:

import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

public class LocalTimeExample {
    public static void main(String[] args) {
        // Time String in "HH:mm:ss" format
        String timeString = "15:30:45";
        
        // Create a DateTimeFormatter with the same pattern
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");

        // Parse the time string into LocalTime
        LocalTime time = LocalTime.parse(timeString, formatter);

        // Print the LocalTime
        System.out.println("LocalTime: " + time);
    }
}

আউটপুট:

LocalTime: 15:30:45

ব্যাখ্যা:

  • এখানে DateTimeFormatter.ofPattern("HH:mm:ss") প্যাটার্নের মাধ্যমে 24 ঘণ্টার সময়ের ফরম্যাটে LocalTime তৈরি করা হয়েছে।
  • LocalTime.parse() মেথড ব্যবহার করে স্ট্রিং থেকে LocalTime অবজেক্টে রূপান্তর করা হয়েছে।

3. ZonedDateTime থেকে Zoned Date-Time String তৈরি করা

ZonedDateTime একটি তারিখ, সময় এবং টাইমজোন ধারণ করে। আপনি যদি একটি ZonedDateTime স্ট্রিং থেকে ZonedDateTime অবজেক্ট তৈরি করতে চান, তবে DateTimeFormatter এবং টাইমজোনের জন্য ZoneId ব্যবহার করতে হবে।

ZonedDateTime String থেকে ZonedDateTime তৈরি করা:

import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.ZoneId;

public class ZonedDateTimeExample {
    public static void main(String[] args) {
        // Zoned Date-Time String in ISO 8601 format
        String zonedDateTimeString = "2024-12-23T15:30:45+05:30[Asia/Kolkata]";
        
        // Create a DateTimeFormatter with the pattern
        DateTimeFormatter formatter = DateTimeFormatter.ISO_ZONED_DATE_TIME;

        // Parse the Zoned Date-Time string into ZonedDateTime
        ZonedDateTime zonedDateTime = ZonedDateTime.parse(zonedDateTimeString, formatter);

        // Print the ZonedDateTime
        System.out.println("ZonedDateTime: " + zonedDateTime);
    }
}

আউটপুট:

ZonedDateTime: 2024-12-23T15:30:45+05:30[Asia/Kolkata]

ব্যাখ্যা:

  • এখানে DateTimeFormatter.ISO_ZONED_DATE_TIME ব্যবহৃত হয়েছে, যা ISO 8601 ফরম্যাট অনুযায়ী ZonedDateTime স্ট্রিং পার্স করে।
  • ZonedDateTime.parse() মেথড দ্বারা স্ট্রিং থেকে ZonedDateTime অবজেক্ট তৈরি করা হয়েছে।
  • স্ট্রিংটির মধ্যে +05:30 হল টাইমজোন, এবং [Asia/Kolkata] হল নির্দিষ্ট অঞ্চলের টাইমজোন।

4. LocalDate, LocalTime, এবং ZonedDateTime এর মধ্যে পার্থক্য:

FeatureLocalDateLocalTimeZonedDateTime
RepresentationOnly date (year, month, day)Only time (hour, minute, second, nanosecond)Date, time, and time zone (e.g., Asia/Kolkata)
Time ZoneDoes not support time zoneDoes not support time zoneSupports time zone (e.g., +05:30 or UTC)
UsageUsed for handling dates onlyUsed for handling times onlyUsed for handling date, time, and time zones
Example2024-12-2315:30:452024-12-23T15:30:45+05:30[Asia/Kolkata]

  • LocalDate, LocalTime, এবং ZonedDateTime হল java.time প্যাকেজের অত্যন্ত গুরুত্বপূর্ণ ক্লাস যা বিভিন্ন ধরনের তারিখ এবং সময় পরিচালনা করতে ব্যবহৃত হয়।
  • আপনি DateTimeFormatter ব্যবহার করে Date and Time Strings থেকে সহজেই LocalDate, LocalTime, এবং ZonedDateTime অবজেক্ট তৈরি করতে পারেন।
  • LocalDate শুধুমাত্র তারিখ ধারণ করে, LocalTime শুধুমাত্র সময় ধারণ করে এবং ZonedDateTime সময়, তারিখ এবং টাইমজোন ধারণ করে।

Java 8 এবং পরবর্তী সংস্করণে java.time প্যাকেজের ব্যবহার পদ্ধতি তারিখ এবং সময় সম্পর্কিত বিভিন্ন কাজ সহজ এবং পরিষ্কার করে তোলে।

Content added By

DateTimeFormatter এর মাধ্যমে Parsing করা

179

DateTimeFormatter ক্লাসটি Java 8-এ java.time.format প্যাকেজের অংশ হিসাবে প্রবর্তিত হয়েছে এবং এটি LocalDate, LocalDateTime, ZonedDateTime, এবং অন্যান্য java.time অবজেক্টের স্ট্রিং থেকে অবজেক্টে কনভার্সন এবং স্ট্রিং ফরম্যাটিং করার জন্য ব্যবহৃত হয়। Parsing এর মাধ্যমে আপনি একটি স্ট্রিংকে নির্দিষ্ট তারিখ এবং সময় অবজেক্টে রূপান্তর করতে পারেন।

DateTimeFormatter দিয়ে Parsing:

DateTimeFormatter ক্লাসটির মাধ্যমে স্ট্রিং থেকে LocalDate, LocalDateTime, বা ZonedDateTime টাইপের অবজেক্টে রূপান্তর করতে parse() মেথড ব্যবহার করা হয়।

parse() মেথডটি একটি স্ট্রিং নিয়ে সেটি নির্দিষ্ট DateTimeFormatter এর মাধ্যমে পার্স (parse) করে একটি TemporalAccessor অবজেক্ট রিটার্ন করে, যা পরবর্তীতে নির্দিষ্ট টাইপে কনভার্ট করা যায়।

Common Methods for Parsing:

  • parse(CharSequence text): এটি একটি স্ট্রিং নিয়ে TemporalAccessor রিটার্ন করে।
  • parse(CharSequence text, DateTimeFormatter formatter): এটি নির্দিষ্ট DateTimeFormatter দিয়ে স্ট্রিংকে পার্স করে।
  • parse(CharSequence text, TemporalQuery<T> query): এটি স্ট্রিং থেকে নির্দিষ্ট টাইপে পার্স করতে সাহায্য করে।

Example: Parsing Date with DateTimeFormatter

1. Basic Parsing with DateTimeFormatter

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class DateTimeFormatterParsingExample {
    public static void main(String[] args) {
        String dateStr = "2024-12-23";  // Date in "yyyy-MM-dd" format
        
        // Create a DateTimeFormatter
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        
        // Parse the string into LocalDate
        LocalDate date = LocalDate.parse(dateStr, formatter);
        
        // Print the parsed date
        System.out.println("Parsed Date: " + date);
    }
}

Output:

Parsed Date: 2024-12-23

ব্যাখ্যা:

  • DateTimeFormatter.ofPattern("yyyy-MM-dd") স্ট্রিং ফরম্যাট (যেমন yyyy-MM-dd) এর জন্য একটি DateTimeFormatter তৈরি করে।
  • LocalDate.parse(dateStr, formatter) মেথডটি স্ট্রিং "2024-12-23" কে পার্স করে LocalDate অবজেক্টে রূপান্তরিত করে।

2. Parsing with Time (LocalDateTime)

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class DateTimeFormatterParsingWithTime {
    public static void main(String[] args) {
        String dateTimeStr = "2024-12-23 15:30";  // Date and Time in "yyyy-MM-dd HH:mm" format
        
        // Create a DateTimeFormatter for Date and Time
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
        
        // Parse the string into LocalDateTime
        LocalDateTime dateTime = LocalDateTime.parse(dateTimeStr, formatter);
        
        // Print the parsed DateTime
        System.out.println("Parsed DateTime: " + dateTime);
    }
}

Output:

Parsed DateTime: 2024-12-23T15:30

ব্যাখ্যা:

  • DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm") স্ট্রিংয়ে তারিখ এবং সময়ের ফরম্যাটের জন্য ফরম্যাটার তৈরি করা হয়েছে।
  • LocalDateTime.parse(dateTimeStr, formatter) স্ট্রিংটি পার্স করে একটি LocalDateTime অবজেক্টে রূপান্তরিত হয়।

3. Parsing with TimeZone (ZonedDateTime)

import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.ZoneId;

public class DateTimeFormatterParsingWithZone {
    public static void main(String[] args) {
        String dateTimeStr = "2024-12-23T15:30+05:30[Asia/Kolkata]";  // Date, Time and Zone
        
        // Create a DateTimeFormatter with a timezone
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mmXXX'['VV']'");
        
        // Parse the string into ZonedDateTime
        ZonedDateTime zonedDateTime = ZonedDateTime.parse(dateTimeStr, formatter);
        
        // Print the parsed ZonedDateTime
        System.out.println("Parsed ZonedDateTime: " + zonedDateTime);
    }
}

Output:

Parsed ZonedDateTime: 2024-12-23T15:30+05:30[Asia/Kolkata]

ব্যাখ্যা:

  • এখানে DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mmXXX'['VV']") ফরম্যাটার দিয়ে ZonedDateTime তৈরি করা হয়েছে, যেখানে টাইমজোনও অন্তর্ভুক্ত রয়েছে।
  • স্ট্রিং "2024-12-23T15:30+05:30[Asia/Kolkata]" পার্স করা হয় এবং ZonedDateTime অবজেক্টে রূপান্তরিত হয়।

4. Parsing with Custom DateTime Format

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class CustomDateTimeParsingExample {
    public static void main(String[] args) {
        String dateStr = "23-Dec-2024";  // Date in "dd-MMM-yyyy" format
        
        // Create a DateTimeFormatter with a custom format
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MMM-yyyy");
        
        // Parse the string into LocalDate
        LocalDate date = LocalDate.parse(dateStr, formatter);
        
        // Print the parsed date
        System.out.println("Parsed Date: " + date);
    }
}

Output:

Parsed Date: 2024-12-23

ব্যাখ্যা:

  • এখানে DateTimeFormatter.ofPattern("dd-MMM-yyyy") ব্যবহার করে কাস্টম ফরম্যাটে তারিখ পার্স করা হয়েছে। যেমন "23-Dec-2024"

DateTimeFormatter এর আরও কিছু বৈশিষ্ট্য:

  1. withZone(ZoneId zone):

    • আপনি DateTimeFormatter এর সাথে একটি নির্দিষ্ট ZoneId (টাইমজোন) যোগ করতে পারেন, যাতে টাইমস্ট্যাম্প টাইমজোন সংক্রান্ত তথ্য রাখে।

    Example:

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm").withZone(ZoneId.of("UTC"));
    
  2. parse(CharSequence text, TemporalQuery<T> query):
    • আপনি TemporalQuery ব্যবহার করে একটি কাস্টম প্যার্সিং কৌশল তৈরি করতে পারেন।
  3. format() Method:
    • DateTimeFormatter স্ট্রিং প্যাটার্ন ব্যবহার করে একটি Temporal অবজেক্টকে ফরম্যাট করতে পারে।
    • উদাহরণ: formatter.format(LocalDate.now())

সারাংশ:

  • DateTimeFormatter হল একটি শক্তিশালী ক্লাস যা স্ট্রিং থেকে তারিখ এবং সময় পার্স করার জন্য ব্যবহৃত হয়।
  • parse() মেথডটি স্ট্রিংকে একটি নির্দিষ্ট তারিখ বা সময় অবজেক্টে রূপান্তর করতে ব্যবহৃত হয়।
  • DateTimeFormatter ব্যবহার করে আপনি কাস্টম ফরম্যাটে তারিখ এবং সময় পার্স করতে পারেন, এবং টাইমজোন বা অন্যান্য অতিরিক্ত তথ্য অন্তর্ভুক্ত করতে পারেন।

এটি Java 8 থেকে java.time প্যাকেজে অন্তর্ভুক্ত করা হয়েছে এবং সময় ব্যবস্থাপনা কোডে দক্ষতা এবং সঠিকতা আনতে এটি খুবই উপকারী।

Content added By

Parsing Exceptions এবং তাদের হ্যান্ডলিং

128

Java 8-এ java.time প্যাকেজের অন্তর্গত টাইম API দিয়ে তারিখ এবং সময়ের কাজগুলো আরও সহজ এবং দক্ষ হয়েছে। এই API-এর মধ্যে DateTimeFormatter নামক ক্লাসটি রয়েছে, যা তারিখ এবং সময়ের স্ট্রিং ইনপুটকে নির্দিষ্ট ফরম্যাটে প্যার্স (parse) করতে ব্যবহৃত হয়। তবে, যখন আপনি একটি স্ট্রিং প্যার্স করেন, তখন ভুল ফরম্যাটের কারণে parsing exceptions হতে পারে। এই পোস্টে আমরা parsing exceptions এবং তাদের exception handling সম্পর্কে আলোচনা করব।

DateTimeFormatter: প্যার্সিং করার জন্য ব্যবহারযোগ্য ফরম্যাটার

DateTimeFormatter ক্লাসটি তারিখ এবং সময়ের স্ট্রিংকে পার্স করার জন্য ব্যবহার করা হয়। এটি স্ট্রিংয়ের নির্দিষ্ট ফরম্যাটের সাথে মিলিয়ে একটি LocalDate, LocalTime, LocalDateTime, ZonedDateTime, ইত্যাদি তৈরি করতে সহায়ক।

Common Parsing Exceptions in DateTimeFormatter:

  • DateTimeParseException: এটি সবচেয়ে সাধারণ parsing exception, যা ঘটে যখন ইনপুট স্ট্রিংটি নির্দিষ্ট ফরম্যাটের সাথে মেলে না।

DateTimeParseException Exception Handling:

DateTimeParseException হল একটি unchecked exception যা DateTimeFormatter এর parse() মেথড ব্যবহারের সময় তখন ঘটে যখন স্ট্রিংটির ফরম্যাট অসঠিক বা অযোগ্য হয়। এই exceptionটি DateTimeFormatter দ্বারা স্ট্রিংকে টাইম অবজেক্টে প্যার্স করার সময় উত্থাপিত হয়।

Example: DateTimeParseException Example

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;

public class DateTimeParseExceptionExample {
    public static void main(String[] args) {
        String dateStr = "2024-13-45"; // Invalid date (13th month and 45th day)

        // Define a formatter for the expected date format
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");

        try {
            // Try to parse the date string
            LocalDate date = LocalDate.parse(dateStr, formatter);
            System.out.println("Parsed date: " + date);
        } catch (DateTimeParseException e) {
            // Handle parsing exception
            System.out.println("Error parsing date: " + e.getMessage());
        }
    }
}

Output:

Error parsing date: Text '2024-13-45' could not be parsed at index 5

ব্যাখ্যা:

  • এখানে dateStr হিসাবে "2024-13-45" একটি ভুল তারিখ, কারণ মাস 13 এবং দিন 45 বৈধ নয়। ফলে, DateTimeParseException উঠে এবং একটি ত্রুটি বার্তা দেওয়া হয়।

Exception Handling: DateTimeParseException

DateTimeParseException হ্যান্ডলিংয়ের জন্য সাধারণত try-catch ব্লক ব্যবহার করা হয়। যখন স্ট্রিংটি নির্দিষ্ট DateTimeFormatter ফরম্যাটের সাথে মেলে না, তখন এই exceptionটি ফেলে দেওয়া হয়। আপনি এই exceptionটি ধরতে এবং সেই অনুযায়ী ত্রুটি বার্তা বা কাস্টম হ্যান্ডলিং ব্যবস্থা করতে পারেন।

Example: Catching DateTimeParseException for Multiple Formats

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;

public class MultiFormatDateParseExample {
    public static void main(String[] args) {
        String dateStr = "2024/12/23";  // Invalid format for default formatter
        
        // Define two possible formatters
        DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy/MM/dd");
        DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd");

        try {
            // Try to parse the date string using the first format
            LocalDate date = LocalDate.parse(dateStr, formatter1);
            System.out.println("Parsed date: " + date);
        } catch (DateTimeParseException e1) {
            try {
                // If the first format fails, try the second one
                LocalDate date = LocalDate.parse(dateStr, formatter2);
                System.out.println("Parsed date: " + date);
            } catch (DateTimeParseException e2) {
                System.out.println("Error parsing date: " + e2.getMessage());
            }
        }
    }
}

Output:

Parsed date: 2024-12-23

ব্যাখ্যা:

  • এখানে প্রথমে "2024/12/23" স্ট্রিংটি formatter1 ব্যবহার করে প্যার্স করার চেষ্টা করা হয়েছে। যদি এটি ব্যর্থ হয়, তবে পরবর্তীতে formatter2 দিয়ে প্যার্স করার চেষ্টা করা হয়।
  • DateTimeParseException যখন একটি নির্দিষ্ট ফরম্যাটে স্ট্রিং প্যার্স করা যায় না, তখন দ্বিতীয় ফরম্যাটটি ব্যবহার করা হয়।

Using DateTimeFormatter with Custom Error Handling

DateTimeFormatter ক্লাসের parse() মেথডে DateTimeParseException ব্যতিক্রমটি সহজে ধরতে এবং ত্রুটির কারণে কোডের অপ্রত্যাশিত আচরণ আটকানো সম্ভব।

Example: Handling Invalid Date Formats Gracefully

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;

public class DateTimeParseGracefullyExample {
    public static void main(String[] args) {
        String[] dateStrings = {"2024-12-23", "2024-13-45", "2024-02-30"};

        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");

        for (String dateStr : dateStrings) {
            try {
                LocalDate date = LocalDate.parse(dateStr, formatter);
                System.out.println("Parsed date: " + date);
            } catch (DateTimeParseException e) {
                System.out.println("Error parsing date '" + dateStr + "': " + e.getMessage());
            }
        }
    }
}

Output:

Parsed date: 2024-12-23
Error parsing date '2024-13-45': Text '2024-13-45' could not be parsed at index 5
Error parsing date '2024-02-30': Text '2024-02-30' could not be parsed at index 8

ব্যাখ্যা:

  • DateTimeParseException গ্রাস করে একটি ভুল তারিখের জন্য ত্রুটি বার্তা প্রদান করছে, কিন্তু অন্য সঠিক তারিখগুলির জন্য প্যার্সিং সফল হয়েছে।
  1. Parsing Exceptions: DateTimeParseException হল একটি সাধারণ exception যা ঘটে যখন DateTimeFormatter দিয়ে স্ট্রিং প্যার্স করার চেষ্টা করা হয় এবং স্ট্রিংটি নির্দিষ্ট ফরম্যাটের সাথে মেলে না।
  2. Exception Handling: try-catch ব্লক ব্যবহার করে এই exception হ্যান্ডল করা যায়, এবং একাধিক ফরম্যাটে স্ট্রিং প্যার্স করার জন্য বিভিন্ন পদ্ধতি প্রয়োগ করা যায়।
  3. Graceful Parsing: ব্যবহারকারী ইনপুট বা ডেটা ভ্যালিডেশন করার সময় আপনি DateTimeParseException ক্যাচ করে সঠিক বার্তা দিয়ে গ্রেসফুল হ্যান্ডলিং করতে পারেন।

এইভাবে DateTimeParseException হ্যান্ডলিংয়ের মাধ্যমে আপনি টাইম এবং তারিখ সম্পর্কিত প্যার্সিং ত্রুটিগুলি আরও কার্যকরভাবে ম্যানেজ করতে পারেন।

Content added By

উদাহরণ সহ Date এবং Time Parsing

138

Java 8-এ java.time প্যাকেজটি তারিখ এবং সময় সম্পর্কিত আধুনিক API প্রদান করেছে যা DateTimeFormatter ক্লাসের মাধ্যমে তারিখ এবং সময় parsing এবং formatting করতে সহায়তা করে। Parsing হল একটি স্ট্রিং থেকে তারিখ বা সময়ের অবজেক্ট তৈরি করা এবং Formatting হল একটি তারিখ বা সময় অবজেক্টকে স্ট্রিং আকারে রূপান্তর করা।

এই টিউটোরিয়ালে, আমরা দেখব কিভাবে তারিখ এবং সময়ের স্ট্রিংকে LocalDate, LocalTime, এবং ZonedDateTime এর মতো টাইম অবজেক্টে parse করা যায়।


1. Date এবং Time Parsing with LocalDate

LocalDate শুধুমাত্র তারিখ (year, month, day) ধারণ করে। আপনি DateTimeFormatter ব্যবহার করে একটি স্ট্রিংকে LocalDate অবজেক্টে পার্স করতে পারেন।

Example: Parsing a Date String into LocalDate

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class DateParsingExample {
    public static void main(String[] args) {
        // Date String in "yyyy-MM-dd" format
        String dateString = "2024-12-23";
        
        // Create a DateTimeFormatter with the pattern
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");

        // Parse the date string into LocalDate
        LocalDate date = LocalDate.parse(dateString, formatter);

        // Print the LocalDate
        System.out.println("Parsed LocalDate: " + date);
    }
}

আউটপুট:

Parsed LocalDate: 2024-12-23

ব্যাখ্যা:

  • DateTimeFormatter.ofPattern("yyyy-MM-dd") প্যাটার্ন অনুযায়ী তারিখ স্ট্রিং পার্স করা হচ্ছে।
  • LocalDate.parse() মেথড ব্যবহার করে স্ট্রিং থেকে একটি LocalDate অবজেক্ট তৈরি করা হয়েছে।

2. Time Parsing with LocalTime

LocalTime শুধুমাত্র সময় (hour, minute, second) ধারণ করে। টাইম স্ট্রিং থেকে LocalTime অবজেক্ট তৈরি করতে DateTimeFormatter ব্যবহার করা যায়।

Example: Parsing a Time String into LocalTime

import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

public class TimeParsingExample {
    public static void main(String[] args) {
        // Time String in "HH:mm:ss" format
        String timeString = "15:30:45";
        
        // Create a DateTimeFormatter with the pattern
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");

        // Parse the time string into LocalTime
        LocalTime time = LocalTime.parse(timeString, formatter);

        // Print the LocalTime
        System.out.println("Parsed LocalTime: " + time);
    }
}

আউটপুট:

Parsed LocalTime: 15:30:45

ব্যাখ্যা:

  • DateTimeFormatter.ofPattern("HH:mm:ss") প্যাটার্নটি ব্যবহার করে "15:30:45" টাইম স্ট্রিং পার্স করা হয়েছে।
  • LocalTime.parse() মেথডটি স্ট্রিং থেকে LocalTime অবজেক্টে রূপান্তরিত করেছে।

3. Date and Time Parsing with ZonedDateTime

ZonedDateTime তারিখ, সময় এবং টাইমজোন ধারণ করে। আপনি DateTimeFormatter.ISO_ZONED_DATE_TIME বা নিজস্ব প্যাটার্ন দিয়ে টাইমস্ট্যাম্প স্ট্রিং পার্স করতে পারেন।

Example: Parsing a Date-Time String into ZonedDateTime

import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

public class ZonedDateTimeParsingExample {
    public static void main(String[] args) {
        // ZonedDateTime String in ISO 8601 format
        String zonedDateTimeString = "2024-12-23T15:30:45+05:30[Asia/Kolkata]";
        
        // Parse the string into ZonedDateTime using ISO_ZONED_DATE_TIME formatter
        ZonedDateTime zonedDateTime = ZonedDateTime.parse(zonedDateTimeString, DateTimeFormatter.ISO_ZONED_DATE_TIME);

        // Print the ZonedDateTime
        System.out.println("Parsed ZonedDateTime: " + zonedDateTime);
    }
}

আউটপুট:

Parsed ZonedDateTime: 2024-12-23T15:30:45+05:30[Asia/Kolkata]

ব্যাখ্যা:

  • DateTimeFormatter.ISO_ZONED_DATE_TIME প্যাটার্ন ব্যবহার করে "2024-12-23T15:30:45+05:30[Asia/Kolkata]" স্ট্রিংটি ZonedDateTime অবজেক্টে রূপান্তরিত করা হয়েছে।
  • এখানে টাইমজোন +05:30 এবং অঞ্চল [Asia/Kolkata] উল্লেখ করা হয়েছে।

4. Custom Pattern দিয়ে Date and Time Parsing

আপনি নিজস্ব প্যাটার্ন ব্যবহার করে স্ট্রিং পার্স করতে পারেন। উদাহরণস্বরূপ, DateTimeFormatter.ofPattern() ব্যবহার করে নির্দিষ্ট তারিখ এবং সময়ের ফরম্যাট থেকে LocalDate, LocalTime, বা ZonedDateTime তৈরি করতে পারবেন।

Example: Custom Pattern Parsing

import java.time.LocalDate;
import java.time.LocalTime;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

public class CustomPatternParsingExample {
    public static void main(String[] args) {
        // Custom Date String (dd/MM/yyyy)
        String dateString = "23/12/2024";
        DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
        LocalDate localDate = LocalDate.parse(dateString, dateFormatter);
        System.out.println("Parsed LocalDate: " + localDate);

        // Custom Time String (hh:mm a)
        String timeString = "03:30 PM";
        DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("hh:mm a");
        LocalTime localTime = LocalTime.parse(timeString, timeFormatter);
        System.out.println("Parsed LocalTime: " + localTime);

        // Custom ZonedDateTime String (dd-MM-yyyy HH:mm:ss z)
        String zonedDateTimeString = "23-12-2024 15:30:45 GMT";
        DateTimeFormatter zonedDateTimeFormatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss z");
        ZonedDateTime zonedDateTime = ZonedDateTime.parse(zonedDateTimeString, zonedDateTimeFormatter);
        System.out.println("Parsed ZonedDateTime: " + zonedDateTime);
    }
}

আউটপুট:

Parsed LocalDate: 2024-12-23
Parsed LocalTime: 15:30
Parsed ZonedDateTime: 2024-12-23T15:30:45Z

ব্যাখ্যা:

  • DateTimeFormatter.ofPattern("dd/MM/yyyy") ফরম্যাট অনুযায়ী LocalDate.parse() ব্যবহার করে একটি তারিখ তৈরি করা হয়েছে।
  • DateTimeFormatter.ofPattern("hh:mm a") ফরম্যাটের মাধ্যমে LocalTime.parse() ব্যবহার করে সময় তৈরি করা হয়েছে।
  • DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss z") ফরম্যাটে ZonedDateTime.parse() ব্যবহার করে টাইমজোন সহ তারিখ এবং সময় তৈরি করা হয়েছে।

5. Parsing Time Zone Specific Date and Time

ZonedDateTime ক্লাসটি টাইমজোন সহ তারিখ এবং সময়ের তথ্য ধারণ করে। আপনি ZonedDateTime.parse() মেথড ব্যবহার করে টাইমজোন সহ তারিখ এবং সময়ের স্ট্রিং থেকে ZonedDateTime অবজেক্ট তৈরি করতে পারেন।

Example: Parsing Date-Time with Specific Time Zone

import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

public class TimeZoneDateTimeParsingExample {
    public static void main(String[] args) {
        // ZonedDateTime String in "yyyy-MM-dd'T'HH:mm:ssXXX" format
        String zonedDateTimeString = "2024-12-23T15:30:45+05:30";
        
        // Parse the string into ZonedDateTime using a custom pattern
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssXXX");
        ZonedDateTime zonedDateTime = ZonedDateTime.parse(zonedDateTimeString, formatter);

        // Print the ZonedDateTime
        System.out.println("Parsed ZonedDateTime: " + zonedDateTime);
    }
}

আউটপুট:

Parsed ZonedDateTime: 2024-12-23T15:30:45+05:30

ব্যাখ্যা:

  • DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssXXX") ফরম্যাটে টাইমজোন সহ তারিখ এবং সময় পার্স করা হয়েছে।
  • এখানে +05:30 টাইমজোন ব্যবহার করা হয়েছে, যা Asia/Kolkata টাইমজোনের সাথে সম্পর্কিত।

  • DateTimeFormatter এবং parse() মেথডগুলি ব্যবহার করে আপনি বিভিন্ন ধরনের date, time, এবং datetime স্ট্রিং থেকে LocalDate, LocalTime, এবং ZonedDateTime তৈরি করতে পারেন।
  • Custom Patterns ব্যবহার করে আপনি আপনার প্রয়োজন অনুযায়ী বিভিন্ন স্ট্রিং ফরম্যাটে তারিখ এবং সময় পার্স করতে পারেন।
  • ZonedDateTime টাইমজোন সহ তারিখ এবং সময় পরিচালনার জন্য গুরুত্বপূর্ণ এবং এটি স্ট্রিং থেকে টাইমজোনসহ তারিখ পার্স করতে সহায়তা করে।

এটি Java 8 এর java.time প্যাকেজের একটি শক্তিশালী ফিচার যা আধুনিক তারিখ এবং সময় ব্যবস্থাপনায় গুরুত্বপূর্ণ ভূমিকা পালন করে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...